\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{geometry}
\geometry{top=15mm, bottom=15mm, left=1cm, right=1cm}
\usepackage[french]{babel}
\usepackage{pslatex}
\usepackage[colorlinks=true,urlcolor=black]{hyperref}
\usepackage{graphicx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\fancyfoot[L]{Uubu.fr}
\fancyfoot[R]{sam. mars 31 08:33:04 CEST 2012}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={OpenSSL - req},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Utilitaire pour créer et traiter des requêtes pkcs\#10},
CreationDate={D:20120331083304},
ModDate={D:20120331083304},
Keywords={PKI;sécurité;chiffrement;certificats}
}}
\begin{document}
 
\begin{center}
{\Huge OpenSSL - req }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Utilitaire pour créer et traiter des requêtes pkcs\#10}
 
\vspace{10mm}
 
\vspace{1cm}{\huge OPTIONS }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} -inform PEM|DER]{Format du fichier d’entrée}
\item[\hspace{1mm} -outform PEM|DER]{Format du fichier de sortie}
\item[\hspace{1mm} -in filename]{Fichier d’entrée}
\item[\hspace{1mm} -passin arg]{source du mot de passe du fichier d’entrée}
\item[\hspace{1mm} -out filename]{Fichier de sortie}
\item[\hspace{1mm} -passout arg]{Source du mot de passe pour le fichier de sortie}
\item[\hspace{1mm} -text]{Affiche la requête en clair}
\item[\hspace{1mm} -subject]{Affiche le sujet de la requête}
\item[\hspace{1mm} -pubkey]{Affiche la clé publique}
\item[\hspace{1mm} -noout]{N’affiche pas la version encodée de la requête}
\item[\hspace{1mm} -modulus]{Affiche le modulo de la clé publique contenue dans la requête}
\item[\hspace{1mm} -verify]{Vérifie la signature de la requête}
\item[\hspace{1mm} -new]{Génère une nouvelle requête de certificat.}
\item[\hspace{1mm} -subj arg]{Remplace le champ sujet dans la requête d’entrée doit être au format /type0=value0/type1=value1/typeN=valueN...}
\item[\hspace{1mm} -rand file(s)]{Fichier(s) contenant les données aléatoire pour le générateur de nombre aléatoire.}
\item[\hspace{1mm} -newkey arg]{Crée une nouvelle requête de certificat et une nouvelle clé privée. arg peut être sous la forme rsa:nbits où nbits est la longueur de la clé RSA. Tous les autres algorithmes supportent la forme alg:file où file est un fichier de paramètre. param:file utilise le fichier de paramètre ou le certificat spécifié par file. L’algorithme est déterminé par les paramètres.}
\item[\hspace{1mm} -pkeyopt opt:value]{Définie une options d’algorithme. (Voir genpkey)}
\item[\hspace{1mm} -key filename]{Spécifie le fichier contenant la clé privée à lire. Accepte le format PKCS\#8.}
\item[\hspace{1mm} -keyform PEM-DER]{Le format du fichier de clé privée.}
\item[\hspace{1mm} -keyout filename]{Nom du fichier où écrire la clé privée.}
\item[\hspace{1mm} -nodes]{Si cette option est spécifiée, la clé privée créée n’est pas chiffrée}
\item[\hspace{1mm} -\texttt{[}digest\texttt{]}]{Spécifie le message digest à utiliser pour signer la requête.}
\item[\hspace{1mm} -multivalue-rdn]{Permet d’interpréter -subj au format RDN multi-valué (exemple : /DC=org/DC=OpenSSL/DC=users/UID=123456+CN=John Doe, sinon le format sera : 123456+CN=John Doe)}
\item[\hspace{1mm} -x509]{Sort un certificat auto-signé au lieu d’une requête de certificat.}
\item[\hspace{1mm} -days -n]{avec -x509, spécifie la durée de validité du certificat (défaut : 30jours)}
\item[\hspace{1mm} -set\_serial n]{Définis le numéro de série du certificat auto-signé. Peut-être en décimal ou en hexa.}
\item[\hspace{1mm} -extensions section]{}
\item[\hspace{1mm} -reqexts section]{Spécifient les sections alternatives à inclure dans la requête.}
\item[\hspace{1mm} -utf8]{interprète les valeurs de champs au format UTF8}
\item[\hspace{1mm} -nameopt option]{détermine comment le sujet et l’issuer sont affichés (voir x509)}
\item[\hspace{1mm} -repopt]{Personnalise le format de sortie avec -text. l’argument peut être une simple options ou plusieurs, séparés par des ’,’ (voir x509)}
\item[\hspace{1mm} -asn1-kludge]{Par défaut, req sort les requêtes de certificat ne contenant pas d’attributs dans le format PKCS\#10 correct. Cependant, certaines CA acceptent uniquement les requêtes ne contenant pas d’attributs dans une forme invalide : cette options produit ce format invalide (les attributs dans une requête PKCS\#10 sont définis comme un set d’attribut SET OF. Ils ne sont pas optionnels donc si aucun attribut n’est présent, il devrait être encodé comme un SET OF vide, une forme invalide ne contient pas ce SET OF vide)}
\item[\hspace{1mm} -no-asn1-kludge]{Inverse l’effet de -asn1-kludge}
\item[\hspace{1mm} -newhdr]{Ajoute le mot NEW dans l’en-tête et pied de page PEM.}
\item[\hspace{1mm} -batch]{Mode non-interactif}
\item[\hspace{1mm} -verbose]{Affiche les détails sur l’opération courante}
\item[\hspace{1mm} -engine id]{req va tenter d’obtenir une référence fonctionnelle du moteur spécifié}
\item[\hspace{1mm} -keygen\_engine id]{Spécifie un moteur qui devrait être utilisé pour les opérations de génération de clé.}
\end{description}
 
\vspace{1cm}{\huge Format du fichier de configuration }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} input\_password output\_password]{Les mots de passe pour les fichier de clé privée d’entrée et de sortie (remplace passin et passout)}
\item[\hspace{1mm} default\_keyfile]{Taille en bits de la clé (défaut 512, remplace -newkey)}
\item[\hspace{1mm} oid\_file]{Spécifie un fichier contenant des OID additionnels. Chaque ligne consiste de l’oid suivi d’un espace blanc, suivi du nom cours, suivi par un blanc et suivi par un nom long.}
\item[\hspace{1mm} oid\_section]{Spécifie la section dans le fichier de configuration contenant les oid supplémentaires}
\item[\hspace{1mm} RANDFILE]{Spécifie un nom de fichier contenant les données aléatoires à utiliser par le moteur de génération de nombres pseudo-aléatoires}
\item[\hspace{1mm} encrypt\_key]{à no, la clé privée n’est pas chiffrée. (Remplace -nodes)}
\item[\hspace{1mm} default\_md]{Spécifie l’algorithme digest à utiliser. (md5, sha1 ou mdc2, défaut : md5)}
\item[\hspace{1mm} string\_mask]{Masque l’utilisation de certaines chaines dans certains champs. default utilise PrintableStrings, T61Strings et BMPStrings.}
\item[\hspace{1mm} pkix]{utilise PrintableStrings et BMPStrings. utf8only utilise UTF8Strings. nombstr utilise PrintableStrings et T61Strings.}
\item[\hspace{1mm} req\_extensions]{Spécifie la section du fichier de configuration contenant la liste des extensions à ajouter à une requête (remplace -reqexts)}
\item[\hspace{1mm} x509\_extensions]{Spécifie la section du fichier de configuration contenant un liste des extensions à ajouter au certificat généré avec -x509 (remplace -extensions)}
\item[\hspace{1mm} prompt]{à no désactive la demande des champs du certificat et prend les valeurs dans le fichier de configuration}
\item[\hspace{1mm} utf8]{à yes les valeurs de champs sont interprétés en utf8 (ASCII par défaut)}
\item[\hspace{1mm} attributes]{Spécifie la section contenant les attributs de requête. Identique à distinguished\_name. Actuellement ignoré par OpenSSL.}
\item[\hspace{1mm} distinguished\_name]{Spécifie la section contenant les champs dn à demander pour générer un certificat ou une requête.}
\end{description}
 
\vspace{1cm}{\huge Format des sections Distinguished Name et Attribute }
 
\
 
\hspace{1mm} Il y’a 2 formats pour ces sections. Si l’option prompt est à no, ces sections consistent de noms de champs et de valeur. Par exemple:
 
{\ttfamily
CN=My Name\\ OU=My Organization\\ emailAddress=someone@somewhere.org\\
}
\vspace{8mm}
 
\hspace{1mm} Si prompt est absent ou à yes, ces sections contiennent la liste des champs à demander:
 
{\ttfamily
fieldName="prompt"\\ fieldName\_default="default field value"\\ fieldName\_min= 2\\ fieldName\_max= 4\\
}
\vspace{8mm}
 
\begin{description} \normalsize
\item[\hspace{1mm} fieldname]{est le nom d’un champs, par exemple commonName ou CN. "prompt" est utilisé pour demander à l’utilisateur d’entrer les informations du champ. Si l’utilisateur n’entre rien, ce champ est omis.}
\item[\hspace{1mm} -]{Si une valeur par défaut est définie, elle sera utilisée si l’utilisateur n’entre rien. L’utilisateur peut outrepasser cette valeur par défaut en entrant le caractère '.'}
\item[\hspace{1mm} -]{Les limites min et max peuvent être utilisé pour limiter les valeurs de champs. Par exemple, countryName peut seulement avoir 2 caractères et doivent être correspondre à un PrintableString}
\item[\hspace{1mm} -]{Certains champs comme organizationName peuvent être utilisé plus d’une fois dans un DN. Un second organizationName peut être entré en l’appelant 1.organizationName}
\item[\hspace{1mm} -]{Les noms de champs permis sont des noms cours ou long d’object identifier. Incluant : commonName, countryName, localityName, organizationName, organizationUnitName, stateOrProvinceName. emailAddress, name, surname, givenName, dnQualifier.}
\item[\hspace{1mm} -]{Des object identifier additionnels peuvent être définis avec les options oid\_file et oid\_section dans le fichier de configuration. Ces champs additionnels seront traités comme si c’était un DirectoryString}
\end{description}
 
\vspace{1cm}{\huge Exemples }
 
\
 
\hspace{1mm} Examiner et vérifier une requête de certificat: \\
\hspace{1mm} \textbf{openssl req -in req.pem -text -verify -noout} \\
\hspace{1mm} Créer une clé privée et générer une requête de certificat: \\
\hspace{1mm} \textbf{openssl genrsa -out key.pem 1024} \\
\hspace{1mm} openssl req -new -key key.pem -out req.pem \\
\hspace{1mm} \textbf{Idem en utilisant uniquement req:} \\
\hspace{1mm} openssl req -newkey rsa:1024 -keyout key.pem -out req.pem \\
\hspace{1mm} \textbf{Générer un certificat root auto-signé:} \\
\hspace{1mm} openssl req -x509 -newkey rsa:1024 -keyout key.pem -out req.pem \\
\hspace{1mm} \textbf{Exemple de fichier pointé par l’option oid\_file:} \\
\hspace{1mm} 1.2.3.4 shortName A longer Name \\
\hspace{1mm} 1.2.3.6 otherName Other longer Name \\
\hspace{1mm} \textbf{Exemple d’une section pointée par oid\_section:} \\
\hspace{1mm} testoid1=1.2.3.5 \\
\hspace{1mm} testoid2=\$testoid1.6 \\
 
\vspace{1cm}{\huge Exemple de fichier de configuration demandant les valeurs de champs }
 
\
 
{\ttfamily
\texttt{[} req \texttt{]}\\ default\_bits = 1024\\ default\_keyfile = privkey.pem\\ distinguished\_name = req\_distinguished\_name\\ attributes = req\_attributes\\ x509\_extensions = v3\_ca\\ \hspace{2mm}\\ dirstring\_type = nobmp\\ \hspace{2mm}\\ \texttt{[} req\_distinguished\_name \texttt{]}\\ countryName = Country Name (2 letter code)\\ countryName\_default = AU\\ countryName\_min = 2\\ countryName\_max = 2\\ \hspace{2mm}\\ localityName = Locality Name (eg, city)\\ \hspace{2mm}\\ organizationalUnitName = Organizational Unit Name (eg, section)\\ \hspace{2mm}\\ commonName = Common Name (eg, YOUR name)\\ commonName\_max = 64\\ \hspace{2mm}\\ emailAddress = Email Address\\ emailAddress\_max = 40\\ \hspace{2mm}\\ \texttt{[} req\_attributes \texttt{]}\\ challengePassword = A challenge password\\ challengePassword\_min = 4\\ challengePassword\_max = 20\\ \hspace{2mm}\\ \texttt{[} v3\_ca \texttt{]}\\ \hspace{2mm}\\ subjectKeyIdentifier=hash\\ authorityKeyIdentifier=keyid:always,issuer:always\\ basicConstraints = CA:true\\
}
\vspace{8mm}
 
\vspace{1cm}{\huge Exemple de configuration contenant toutes les valeurs de champs }
 
\
 
{\ttfamily
RANDFILE = \$ENV ::HOME/.rnd\\ \hspace{2mm}\\ \texttt{[} req \texttt{]}\\ default\_bits = 1024\\ default\_keyfile = keyfile.pem\\ distinguished\_name = req\_distinguished\_name\\ attributes = req\_attributes\\ prompt = no\\ output\_password = mypass\\ \hspace{2mm}\\ \texttt{[} req\_distinguished\_name \texttt{]}\\ C = GB\\ ST = Test State or Province\\ L = Test Locality\\ O = Organization Name\\ OU = Organizational Unit Name\\ CN = Common Name\\ emailAddress = test@email.address\\ \hspace{2mm}\\ \texttt{[} req\_attributes \texttt{]}\\ challengePassword = A challenge password\\
}
\vspace{8mm}
 
\vspace{1cm}{\huge Notes }
 
\
 
\hspace{1mm} Le format PEM inclus:
 
{\ttfamily
-----BEGIN CERTIFICATE REQUEST-----\\ -----END CERTIFICATE REQUEST-----\\
}
\vspace{8mm}
 
\hspace{1mm} Certains logiciels comme Netscape certificate server nécessitent:
 
{\ttfamily
-----BEGIN NEW CERTIFICATE REQUEST-----\\ -----END NEW CERTIFICATE REQUEST-----\\
}
\vspace{8mm}
 
\vspace{1cm}{\huge Variables d'environnement }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} OPENSSL\_CONF]{peut être utilisé comme emplacement de fichier de configuration alternatif.}
\end{description}
\end{flushleft}
\end{document}
